package jzqb.service.impl;

import haha.life.common.BelongToSqlUtils;
import haha.life.common.MonitorTypeTool;
import haha.life.normal.FileuploadUtils;
import jzqb.bo.AdminQueryBo;
import jzqb.bo.StandKnowleageBo;
import jzqb.common.Result;
import jzqb.dao.AdminJSYYDao;
import jzqb.dao.AdminUserInfoDao;
import jzqb.dao.CGDao;
import jzqb.po.AdminUserPo;
import jzqb.po.CGPo;
import jzqb.po.JSYYPo;
import jzqb.po.YQTJSYYFLPo;
import jzqb.service.AdminCGService;
import jzqb.service.AdminJSYYService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 视频业务层实现类
 */
@Service
public class AdminJSYYServiceImpl implements AdminJSYYService {

    @Autowired
    private AdminJSYYDao adminJSYYDao;

    @Autowired
    private AdminUserInfoDao adminUserInfoDao;

    @Override
    public Boolean insertJSYY(JSYYPo po){
        String year = FileuploadUtils.getYear(po.getPublishDate());
        po.setYear(year);
        return adminJSYYDao.insertJSYY(po);
    }

    @Override
    public Boolean updateJSYY(JSYYPo po){
        String year = FileuploadUtils.getYear(po.getPublishDate());
        po.setYear(year);
        return adminJSYYDao.updateJSYY(po);
    }

    @Override
    public Boolean deleteJSYY(JSYYPo po) {
        return adminJSYYDao.deleteJSYY(po);
    }

    @Override
    public List<JSYYPo> queryJSYY(AdminQueryBo bo) {
        String type ="";
        List<AdminUserPo> allUserList = null;//全部用户
        List<JSYYPo>  list = null;
        List<StandKnowleageBo> flList =null;
        Map map = new HashMap<String,String>();
        list = adminJSYYDao.queryJSYY(bo);
        if (list != null && !list.isEmpty()) {
            allUserList = adminUserInfoDao.findAllUser();
            List<YQTJSYYFLPo> jsyyfl = adminJSYYDao.queryJSYYFL(new AdminQueryBo());
            if (jsyyfl != null && !jsyyfl.isEmpty()) {
                for (YQTJSYYFLPo po : jsyyfl) {
                    map.put(po.getDbCode(),po.getShowName());
                }
            }
            for (JSYYPo po : list) {
                if (allUserList != null && !allUserList.isEmpty()) {
                    for (AdminUserPo userPo : allUserList) {
                        if (po.getRecorder().equals(userPo.getId())) {
                            po.setRecorderName(userPo.getName());
                            break;
                        }
                    }
                }
                Object o = map.get(po.getClassification());
                if(o!= null){
                    po.setClassificationName(o.toString());
                }
            }
        }
        return list;
    }

    @Override
    public Long count(AdminQueryBo bo) {
        return adminJSYYDao.count(bo);
    }

    @Override
    public List<YQTJSYYFLPo> queryJSYYFL(AdminQueryBo bo) {
        return adminJSYYDao.queryJSYYFL(bo);
    }

    @Override
    public Result insertJSYYFL(YQTJSYYFLPo YQTJSYYFLPo) {
        AdminQueryBo bo = new AdminQueryBo();
        bo.setShowName(YQTJSYYFLPo.getShowName());
        bo.setDbCode(YQTJSYYFLPo.getDbCode());
        bo.setSortNumber(YQTJSYYFLPo.getSortNumber());
        List<YQTJSYYFLPo> list = adminJSYYDao.queryJSYYFL(bo);
        YQTJSYYFLPo isSort = null;
        if(list != null && !list.isEmpty()){
            for (YQTJSYYFLPo po : list) {
                if((YQTJSYYFLPo.getDbCode()).equals(po.getDbCode())){
                    return Result.fail("数据编码已存在！");
                }else if((YQTJSYYFLPo.getShowName()).equals(po.getShowName())){
                    return Result.fail("显示名称已存在！");
                }else if((YQTJSYYFLPo.getSortNumber()).equals(po.getSortNumber())){
                    isSort = po;
                }
            }
        }
        if(isSort != null){
            YQTJSYYFLPo po1 = new YQTJSYYFLPo();
            po1.setId(isSort.getId());
            po1.setSortNumber(YQTJSYYFLPo.getBeforeSortNumber());
            adminJSYYDao.updateJSYYFL(po1);
        }
        Boolean insertJSYYFL = adminJSYYDao.insertJSYYFL(YQTJSYYFLPo);
        return Result.succ(insertJSYYFL);
    }

    @Override
    public Boolean deleteJSYYFL(YQTJSYYFLPo YQTJSYYFLPo) {
        //删除军事影音分类时将该分类包含的军事影音中的“分类”字段清空
        String dbCode = YQTJSYYFLPo.getDbCode();
        JSYYPo po = new JSYYPo();
        po.setClassification(dbCode);
        Boolean result = adminJSYYDao.updateJSYYByDelFl(po);
        return adminJSYYDao.deleteJSYYFL(YQTJSYYFLPo);
    }

    @Override
    public Result updateJSYYFL(YQTJSYYFLPo YQTJSYYFLPo) {
        AdminQueryBo bo = new AdminQueryBo();
        bo.setShowName(YQTJSYYFLPo.getShowName());
        bo.setDbCode(YQTJSYYFLPo.getDbCode());
        bo.setSortNumber(YQTJSYYFLPo.getSortNumber());
        YQTJSYYFLPo isSort = null;
        List<YQTJSYYFLPo> list = adminJSYYDao.queryJSYYFL(bo);
        if(list != null && !list.isEmpty()){
            for (YQTJSYYFLPo po : list) {
                if((YQTJSYYFLPo.getDbCode()).equals(po.getDbCode()) && !(YQTJSYYFLPo.getId()).equals(po.getId())){
                    return Result.fail("数据编码已存在！");
                }else if((YQTJSYYFLPo.getShowName()).equals(po.getShowName())&& !(YQTJSYYFLPo.getId()).equals(po.getId())){
                    return Result.fail("显示名称已存在！");
                }else if((YQTJSYYFLPo.getSortNumber()).equals(po.getSortNumber())){
                    isSort = po;
                }
            }
        }
        if(isSort != null){
            YQTJSYYFLPo po1 = new YQTJSYYFLPo();
            po1.setId(isSort.getId());
            po1.setSortNumber(YQTJSYYFLPo.getBeforeSortNumber());
            adminJSYYDao.updateJSYYFL(po1);
        }
        Boolean updateJSYYFL = adminJSYYDao.updateJSYYFL(YQTJSYYFLPo);
        return Result.succ(updateJSYYFL);
    }

    @Override
    public List<YQTJSYYFLPo> queryJSYYFLMax() {
        return adminJSYYDao.queryJSYYFLMax();
    }



}
